home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 2: CDPD 1 / Almathera Ten on Ten - Disc 2: CDPD 1.iso / pd / 026-050 / 049 / plot / plot.c < prev    next >
C/C++ Source or Header  |  1995-03-13  |  21KB  |  632 lines

  1. /* plot.c -- based on the 3d graphics programs by M. Waite & C. L. Morgan
  2. >>>>>from the book "Graphics Primer for the IBM PC"<<<<<
  3. Converted to Amiga Lattice 'C' by Terry W. Gintz*/
  4.  
  5. void IMsg();
  6.  
  7. /* Include the definitions and functions we need */
  8.  
  9. #include "plot.h"
  10. #include "plotter.c"
  11. #include "palette.c"
  12. #include "save.c"
  13. #include "formula.c"
  14. #include "mouse.c"
  15.  
  16. extern int save(),palette(),formula();
  17. extern struct ColorMap *p_Co;
  18. extern SHORT mx,my;
  19. double magx,magy;
  20.  
  21. struct IntuiText titletext = {
  22.    2,2,JAM1,0,0,NL,(UBYTE *)"COS(x)*COS(y)",NL};
  23.  
  24. struct IntuiText Menu0IText [] = {
  25.  
  26.    {
  27.    0,3,JAM2,      /* Front Pen, Back Pen, Draw Mode */
  28.    0,0,            /* Left Edge, Top Edge */
  29.    &TestFont,         /* pointer to Text Font */
  30.    "  new plot  ",   /* text of Menu Item */
  31.    NULL            /* pointer to next IText */
  32.    },
  33.  
  34.    {0,3,JAM2,0,0,&TestFont,"modify color",NULL },
  35.    {0,3,JAM2,0,0,&TestFont,"save picture",NULL },
  36.    {0,3,JAM2,0,0,&TestFont,"new formula ",NULL },
  37.    {0,3,JAM2,0,0,&TestFont,"    quit    ",NULL },
  38. };
  39.  
  40. struct MenuItem Menu0Item[5] = {
  41.    {
  42.    &Menu0Item[1],         /* pointer to next Item */
  43.    0,0,120,9,      /* Left, Top, Width, Height */
  44.    ITEMTEXT | ITEMENABLED | HIGHCOMP,   /* Flags */
  45.    0,            /* no mutual exclude */
  46.    (APTR)&Menu0IText[0],   /* Render info */   
  47.    NULL,NULL,NULL,         /*Alt Image, Command (amiga) char, subitem*/
  48.    MENUNULL      /* next select */
  49.    },
  50.  
  51.    {&Menu0Item[2],0,9,120,9,ITEMTEXT | ITEMENABLED | HIGHCOMP,
  52.    0,(APTR)&Menu0IText[1],NULL,NULL,NULL,MENUNULL},
  53.  
  54.    {&Menu0Item[3],0,18,120,9,ITEMTEXT | ITEMENABLED | HIGHCOMP,
  55.    0,(APTR)&Menu0IText[2],NULL,NULL,NULL,MENUNULL},
  56.  
  57.    {&Menu0Item[4],0,27,120,9,ITEMTEXT | ITEMENABLED | HIGHCOMP,
  58.    0,(APTR)&Menu0IText[3],NULL,NULL,NULL,MENUNULL},
  59.  
  60.    {NULL,0,36,120,9,ITEMTEXT | ITEMENABLED | HIGHCOMP,
  61.    0,(APTR)&Menu0IText[4],NULL,NULL,NULL,MENUNULL}
  62. };
  63.  
  64. struct IntuiText Menu1IText [] = {
  65.  
  66.    {
  67.    0,3,JAM2,      /* Front Pen, Back Pen, Draw Mode */
  68.    0,0,            /* Left Edge, Top Edge */
  69.    &TestFont,         /* pointer to Text Font */
  70.    " 10°",   /* text of Menu Item */
  71.    NULL            /* pointer to next IText */
  72.    },
  73.  
  74.    {0,3,JAM2,0,0,&TestFont," 15°",NULL },
  75.    {0,3,JAM2,0,0,&TestFont," 20°",NULL },
  76.    {0,3,JAM2,0,0,&TestFont," 25°",NULL },
  77.    {0,3,JAM2,0,0,&TestFont," 30°",NULL },
  78.    {0,3,JAM2,0,0,&TestFont," 35°",NULL },
  79.    {0,3,JAM2,0,0,&TestFont," 40°",NULL },
  80.    {0,3,JAM2,0,0,&TestFont," 45°",NULL },
  81.    {0,3,JAM2,0,0,&TestFont," 50°",NULL },
  82.    {0,3,JAM2,0,0,&TestFont," 55°",NULL },
  83.    {0,3,JAM2,0,0,&TestFont," 60°",NULL },
  84.    {0,3,JAM2,0,0,&TestFont," 65°",NULL },
  85.    {0,3,JAM2,0,0,&TestFont," 70°",NULL },
  86.    {0,3,JAM2,0,0,&TestFont," 75°",NULL },
  87.    {0,3,JAM2,0,0,&TestFont," 80°",NULL },
  88. };
  89.  
  90. struct MenuItem Menu1Item[15] = {
  91.    {
  92.    &Menu1Item[1],         /* pointer to next Item */
  93.    0,0,40,9,      /* Left, Top, Width, Height */
  94.    ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,   /* Flags */
  95.    (~(1 << 0)),            /* mutual exclude */
  96.    (APTR)&Menu1IText[0],   /* Render info */
  97.    NULL,NULL,NULL,         /*Alt Image, Command (amiga) char, subitem*/
  98.    MENUNULL      /* next select */
  99.    },
  100.  
  101.    {&Menu1Item[2],0,9,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  102.    (~(1 << 1)),(APTR)&Menu1IText[1],NULL,NULL,NULL,MENUNULL},
  103.  
  104.    {&Menu1Item[3],0,18,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  105.    (~(1 << 2)),(APTR)&Menu1IText[2],NULL,NULL,NULL,MENUNULL},
  106.  
  107.    {&Menu1Item[4],0,27,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  108.    (~(1 << 3)),(APTR)&Menu1IText[3],NULL,NULL,NULL,MENUNULL},
  109.  
  110.    {&Menu1Item[5],0,36,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  111.    (~(1 << 4)),(APTR)&Menu1IText[4],NULL,NULL,NULL,MENUNULL},
  112.  
  113.    {&Menu1Item[6],0,45,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  114.    (~(1 << 5)),(APTR)&Menu1IText[5],NULL,NULL,NULL,MENUNULL},
  115.  
  116.    {&Menu1Item[7],0,54,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  117.    (~(1 << 6)),(APTR)&Menu1IText[6],NULL,NULL,NULL,MENUNULL},
  118.  
  119.    {&Menu1Item[8],0,63,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT | CHECKED,
  120.    (~(1 << 7)),(APTR)&Menu1IText[7],NULL,NULL,NULL,MENUNULL},
  121.  
  122.    {&Menu1Item[9],0,72,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  123.    (~(1 << 8)),(APTR)&Menu1IText[8],NULL,NULL,NULL,MENUNULL},
  124.  
  125.    {&Menu1Item[10],0,81,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  126.    (~(1 << 9)),(APTR)&Menu1IText[9],NULL,NULL,NULL,MENUNULL},
  127.  
  128.    {&Menu1Item[11],0,90,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  129.    (~(1 << 10)),(APTR)&Menu1IText[10],NULL,NULL,NULL,MENUNULL},
  130.  
  131.    {&Menu1Item[12],0,99,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  132.    (~(1 << 11)),(APTR)&Menu1IText[11],NULL,NULL,NULL,MENUNULL},
  133.  
  134.    {&Menu1Item[13],0,108,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  135.    (~(1 << 12)),(APTR)&Menu1IText[12],NULL,NULL,NULL,MENUNULL},
  136.  
  137.    {&Menu1Item[14],0,117,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  138.    (~(1 << 13)),(APTR)&Menu1IText[13],NULL,NULL,NULL,MENUNULL},
  139.  
  140.    {NULL,1,126,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  141.    (~(1 << 14)),(APTR)&Menu1IText[14],NULL,NULL,NULL,MENUNULL},
  142. };
  143.  
  144. struct IntuiText Menu2IText [] = {
  145.  
  146.    {
  147.    0,3,JAM2,      /* Front Pen, Back Pen, Draw Mode */
  148.    0,0,            /* Left Edge, Top Edge */
  149.    &TestFont,         /* pointer to Text Font */
  150.    " 10°",   /* text of Menu Item */
  151.    NULL            /* pointer to next IText */
  152.    },
  153.                               
  154.    {0,3,JAM2,0,0,&TestFont," 15°",NULL },
  155.    {0,3,JAM2,0,0,&TestFont," 20°",NULL },
  156.    {0,3,JAM2,0,0,&TestFont," 25°",NULL },
  157.    {0,3,JAM2,0,0,&TestFont," 30°",NULL },
  158.    {0,3,JAM2,0,0,&TestFont," 35°",NULL },
  159.    {0,3,JAM2,0,0,&TestFont," 40°",NULL },
  160.    {0,3,JAM2,0,0,&TestFont," 45°",NULL },
  161.    {0,3,JAM2,0,0,&TestFont," 50°",NULL },
  162.    {0,3,JAM2,0,0,&TestFont," 55°",NULL },
  163.    {0,3,JAM2,0,0,&TestFont," 60°",NULL },
  164.    {0,3,JAM2,0,0,&TestFont," 65°",NULL },
  165.    {0,3,JAM2,0,0,&TestFont," 70°",NULL },
  166.    {0,3,JAM2,0,0,&TestFont," 75°",NULL },
  167.    {0,3,JAM2,0,0,&TestFont," 80°",NULL },
  168. };
  169.  
  170. struct MenuItem Menu2Item[15] = {
  171.    {
  172.    &Menu2Item[1],         /* pointer to next Item */
  173.    0,0,40,9,      /* Left, Top, Width, Height */
  174.    ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,   /* Flags */
  175.    (~(1 << 0)),            /* mutual exclude */
  176.    (APTR)&Menu2IText[0],   /* Render info */
  177.    NULL,NULL,NULL,         /*Alt Image, Command (amiga) char, subitem*/
  178.    MENUNULL      /* next select */
  179.    },
  180.  
  181.    {&Menu2Item[2],0,9,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  182.    (~(1 << 1)),(APTR)&Menu2IText[1],NULL,NULL,NULL,MENUNULL},
  183.  
  184.    {&Menu2Item[3],0,18,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  185.    (~(1 << 2)),(APTR)&Menu2IText[2],NULL,NULL,NULL,MENUNULL},
  186.  
  187.    {&Menu2Item[4],0,27,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  188.    (~(1 << 3)),(APTR)&Menu2IText[3],NULL,NULL,NULL,MENUNULL},
  189.  
  190.    {&Menu2Item[5],0,36,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT | CHECKED,
  191.    (~(1 << 4)),(APTR)&Menu2IText[4],NULL,NULL,NULL,MENUNULL},
  192.  
  193.    {&Menu2Item[6],0,45,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  194.    (~(1 << 5)),(APTR)&Menu2IText[5],NULL,NULL,NULL,MENUNULL},
  195.  
  196.    {&Menu2Item[7],0,54,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  197.    (~(1 << 6)),(APTR)&Menu2IText[6],NULL,NULL,NULL,MENUNULL},
  198.  
  199.    {&Menu2Item[8],0,63,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  200.    (~(1 << 7)),(APTR)&Menu2IText[7],NULL,NULL,NULL,MENUNULL},
  201.  
  202.    {&Menu2Item[9],0,72,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  203.    (~(1 << 8)),(APTR)&Menu2IText[8],NULL,NULL,NULL,MENUNULL},
  204.  
  205.    {&Menu2Item[10],0,81,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  206.    (~(1 << 9)),(APTR)&Menu2IText[9],NULL,NULL,NULL,MENUNULL},
  207.  
  208.    {&Menu2Item[11],0,90,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  209.    (~(1 << 10)),(APTR)&Menu2IText[10],NULL,NULL,NULL,MENUNULL},
  210.  
  211.    {&Menu2Item[12],0,99,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  212.    (~(1 << 11)),(APTR)&Menu2IText[11],NULL,NULL,NULL,MENUNULL},
  213.  
  214.    {&Menu2Item[13],0,108,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  215.    (~(1 << 12)),(APTR)&Menu2IText[12],NULL,NULL,NULL,MENUNULL},
  216.  
  217.    {&Menu2Item[14],0,117,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  218.    (~(1 << 13)),(APTR)&Menu2IText[13],NULL,NULL,NULL,MENUNULL},
  219.  
  220.    {NULL,1,126,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  221.    (~(1 << 14)),(APTR)&Menu2IText[14],NULL,NULL,NULL,MENUNULL},
  222. };
  223. struct IntuiText Menu3IText [] = {
  224.  
  225.    {
  226.    0,3,JAM2,      /* Front Pen, Back Pen, Draw Mode */
  227.    0,0,            /* Left Edge, Top Edge */
  228.    &TestFont,         /* pointer to Text Font */
  229.    "  5",   /* text of Menu Item */
  230.    NULL            /* pointer to next IText */
  231.    },
  232.                               
  233.    {0,3,JAM2,0,0,&TestFont," 10",NULL },
  234.    {0,3,JAM2,0,0,&TestFont," 15",NULL },
  235.    {0,3,JAM2,0,0,&TestFont," 20",NULL },
  236.    {0,3,JAM2,0,0,&TestFont," 25",NULL },
  237.    {0,3,JAM2,0,0,&TestFont," 30",NULL },
  238.    {0,3,JAM2,0,0,&TestFont," 35",NULL },
  239.    {0,3,JAM2,0,0,&TestFont," 40",NULL },
  240. };
  241.  
  242. struct MenuItem Menu3Item[8] = {
  243.    {
  244.    &Menu3Item[1],         /* pointer to next Item */
  245.    0,0,30,9,      /* Left, Top, Width, Height */
  246.    ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,   /* Flags */
  247.    (~(1 << 0)),            /* mutual exclude */
  248.    (APTR)&Menu3IText[0],   /* Render info */
  249.    NULL,NULL,NULL,         /*Alt Image, Command (amiga) char, subitem*/
  250.    MENUNULL      /* next select */
  251.    },
  252.  
  253.    {&Menu3Item[2],0,9,30,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  254.    (~(1 << 1)),(APTR)&Menu3IText[1],NULL,NULL,NULL,MENUNULL},
  255.  
  256.    {&Menu3Item[3],0,18,30,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  257.    (~(1 << 2)),(APTR)&Menu3IText[2],NULL,NULL,NULL,MENUNULL},
  258.  
  259.    {&Menu3Item[4],0,27,30,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT | CHECKED,
  260.    (~(1 << 3)),(APTR)&Menu3IText[3],NULL,NULL,NULL,MENUNULL},
  261.  
  262.    {&Menu3Item[5],0,36,30,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  263.    (~(1 << 4)),(APTR)&Menu3IText[4],NULL,NULL,NULL,MENUNULL},
  264.  
  265.    {&Menu3Item[6],0,45,30,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  266.    (~(1 << 5)),(APTR)&Menu3IText[5],NULL,NULL,NULL,MENUNULL},
  267.  
  268.    {&Menu3Item[7],0,54,30,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  269.    (~(1 << 6)),(APTR)&Menu3IText[6],NULL,NULL,NULL,MENUNULL},
  270.  
  271.    {NULL,0,63,30,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  272.    (~(1 << 7)),(APTR)&Menu3IText[7],NULL,NULL,NULL,MENUNULL}
  273.  
  274. };
  275.  
  276. struct IntuiText Menu4IText [] = {
  277.  
  278.    {
  279.    0,3,JAM2,      /* Front Pen, Back Pen, Draw Mode */
  280.    0,0,            /* Left Edge, Top Edge */
  281.    &TestFont,         /* pointer to Text Font */
  282.    "  5",   /* text of Menu Item */
  283.    NULL            /* pointer to next IText */
  284.    },
  285.                               
  286.    {0,3,JAM2,0,0,&TestFont," 10",NULL },
  287.    {0,3,JAM2,0,0,&TestFont," 15",NULL },
  288.    {0,3,JAM2,0,0,&TestFont," 20",NULL },
  289.    {0,3,JAM2,0,0,&TestFont," 25",NULL },
  290.    {0,3,JAM2,0,0,&TestFont," 30",NULL },
  291.    {0,3,JAM2,0,0,&TestFont," 35",NULL },
  292.    {0,3,JAM2,0,0,&TestFont," 40",NULL },
  293. };
  294.  
  295. struct MenuItem Menu4Item[8] = {
  296.    {
  297.    &Menu4Item[1],         /* pointer to next Item */
  298.    0,0,30,9,      /* Left, Top, Width, Height */
  299.    ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,   /* Flags */
  300.    (~(1 << 0)),            /* mutual exclude */
  301.    (APTR)&Menu4IText[0],   /* Render info */
  302.    NULL,NULL,NULL,         /*Alt Image, Command (amiga) char, subitem*/
  303.    MENUNULL      /* next select */
  304.    },
  305.  
  306.    {&Menu4Item[2],0,9,30,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  307.    (~(1 << 1)),(APTR)&Menu4IText[1],NULL,NULL,NULL,MENUNULL},
  308.  
  309.    {&Menu4Item[3],0,18,30,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  310.    (~(1 << 2)),(APTR)&Menu4IText[2],NULL,NULL,NULL,MENUNULL},
  311.  
  312.    {&Menu4Item[4],0,27,30,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT | CHECKED,
  313.    (~(1 << 3)),(APTR)&Menu4IText[3],NULL,NULL,NULL,MENUNULL},
  314.  
  315.    {&Menu4Item[5],0,36,30,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  316.    (~(1 << 4)),(APTR)&Menu4IText[4],NULL,NULL,NULL,MENUNULL},
  317.  
  318.    {&Menu4Item[6],0,45,30,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  319.    (~(1 << 5)),(APTR)&Menu4IText[5],NULL,NULL,NULL,MENUNULL},
  320.  
  321.    {&Menu4Item[7],0,54,30,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  322.    (~(1 << 6)),(APTR)&Menu4IText[6],NULL,NULL,NULL,MENUNULL},
  323.  
  324.    {NULL,0,63,30,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  325.    (~(1 << 7)),(APTR)&Menu4IText[7],NULL,NULL,NULL,MENUNULL}
  326.  
  327. };
  328.  
  329. struct Menu BdMenu[5] = {
  330. {
  331.    &BdMenu[1],      /* ptr to next Menu */
  332.    10,0,120,0,   /* left,top,width,height--top and height ignored */
  333.    MENUENABLED,   /* Flags */
  334.    "    Main    ",   /* menu title */
  335.    &Menu0Item[0]   /* First Item in list */
  336. },
  337.    {&BdMenu[2],140,0,40,0,MENUENABLED,"Spin",&Menu1Item[0]},
  338.    {&BdMenu[3],190,0,40,0,MENUENABLED,"Tip ",&Menu2Item[0]},
  339.    {&BdMenu[4],240,0,30,0,MENUENABLED,"M*X",&Menu3Item[0]},
  340.    {NULL,280,0,30,0,MENUENABLED,"M*Y",&Menu4Item[0]}
  341. };
  342.  
  343. int sav,foo;
  344. UWORD color18, color19;
  345. extern char z[30];
  346. extern int spin,tip;
  347.  
  348. main()
  349. {
  350.    USHORT drawing;
  351.  
  352.    drawing=1;
  353.    initwind();
  354.    init_colors();
  355.    init_scr();
  356.    strcpy(z,"COS(x)*COS(y)");
  357.    color18=GetRGB4(p_Co,18);
  358.    color19=GetRGB4(p_Co,19);
  359.    SetRGB4(vp,18,15,0,0);
  360.    SetRGB4(vp,19,15,15,15);
  361.    SetPointer(w,&PointImage,14,16,0,0);
  362.    magx=20.0;
  363.    magy=20.0;
  364.    mx=150;
  365.    my=90;
  366.    spin=45;
  367.    tip=30;
  368.    plotter();
  369.    PrintIText(w->RPort,&titletext,60,175);
  370.    ClearPointer(w);
  371.    while(drawing)
  372.    {
  373.       IMsg();
  374.    }
  375. }   /* end of main */
  376.  
  377. void IMsg()
  378. {
  379.    struct IntuiMessage *BdMsg;      /* Intuition message structure */
  380.    ULONG Mclass;               /* Message class */
  381.    USHORT Mcode;            /* Message code */
  382.  
  383. while (BdMsg = (struct IntuiMessage *)GetMsg(w->UserPort))
  384.    {
  385.    Mclass = BdMsg->Class;
  386.    Mcode = BdMsg->Code;
  387.    ReplyMsg(BdMsg);
  388.    switch (Mclass) {
  389.       case CLOSEWINDOW:
  390.          clear_colors();
  391.          Cleanup();
  392.          exit(TRUE);
  393.          break;
  394.  
  395.       case MENUPICK:
  396.          switch (MENUNUM(Mcode)){
  397.             case 0:
  398.                switch (ITEMNUM(Mcode)){
  399.                   case 0:
  400.                      color18=GetRGB4(p_Co,18);
  401.                      color19=GetRGB4(p_Co,19);
  402.                      SetRGB4(vp,18,0,15,0);
  403.                      SetRGB4(vp,19,11,4,0);
  404.                      SetPointer(w,&CursorImage,14,16,0,0);
  405.                      mouse();
  406.                      ClearPointer(w);
  407.                      color18=GetRGB4(p_Co,18);
  408.                      color19=GetRGB4(p_Co,19);
  409.                      SetRGB4(vp,18,15,0,0);
  410.                      SetRGB4(vp,19,15,15,15);
  411.                      SetPointer(w,&PointImage,14,16,0,0);
  412.                      plotter();
  413.                      titletext.IText=(UBYTE *)z;
  414.                      PrintIText(w->RPort,&titletext,60,175);
  415.                      ClearPointer(w);
  416.                      break;
  417.                   case 1:
  418.                      palette(w);
  419.                      break;
  420.                   case 2:
  421.                      sav=save(w);
  422.                      if (sav==1){
  423.                      color18=GetRGB4(p_Co,18);
  424.                      color19=GetRGB4(p_Co,19);
  425.                      SetRGB4(vp,18,15,0,0);
  426.                      SetRGB4(vp,19,15,15,15);
  427.                      SetPointer(w,&PointImage,14,16,0,0);
  428.                      SavePicture();
  429.                      ClearPointer(w);
  430.                      }
  431.                      break;
  432.                   case 3:
  433.                      foo=formula(w);
  434.                      if (foo==1){
  435.                         color18=GetRGB4(p_Co,18);
  436.                         color19=GetRGB4(p_Co,19);
  437.                         SetRGB4(vp,18,0,15,0);
  438.                         SetRGB4(vp,19,11,4,0);
  439.                         SetPointer(w,&CursorImage,14,16,0,0);
  440.                         mouse();
  441.                         ClearPointer(w);
  442.                         color18=GetRGB4(p_Co,18);
  443.                         color19=GetRGB4(p_Co,19);
  444.                         SetRGB4(vp,18,15,0,0);
  445.                         SetRGB4(vp,19,15,15,15);
  446.                         SetPointer(w,&PointImage,14,16,0,0);
  447.                         plotter();
  448.                         titletext.IText=(UBYTE *)z;
  449.                         PrintIText(w->RPort,&titletext,60,175);
  450.                         ClearPointer(w);
  451.                      }
  452.                      break;
  453.                   case 4:
  454.                      clear_colors();
  455.                      Cleanup();
  456.                      exit(TRUE);
  457.                      break;
  458.                }
  459.                break;
  460.             case 1:
  461.                switch(ITEMNUM(Mcode)){
  462.                   case 0:
  463.                      spin=10;
  464.                      break;
  465.                   case 1:
  466.                      spin=15;
  467.                      break;
  468.                   case 2:
  469.                      spin=20;
  470.                      break;
  471.                   case 3:
  472.                      spin=25;
  473.                      break;
  474.                   case 4:
  475.                      spin=30;
  476.                      break;
  477.                   case 5:
  478.                      spin=35;
  479.                      break;
  480.                   case 6:
  481.                      spin=40;
  482.                      break;
  483.                   case 7:
  484.                      spin=45;
  485.                      break;
  486.                   case 8:
  487.                      spin=50;
  488.                      break;
  489.                   case 9:
  490.                      spin=55;
  491.                      break;
  492.                   case 10:
  493.                      spin=60;
  494.                      break;
  495.                   case 11:
  496.                      spin=65;
  497.                      break;
  498.                   case 12:
  499.                      spin=70;
  500.                      break;
  501.                   case 13:
  502.                      spin=75;
  503.                      break;
  504.                   case 14:
  505.                      spin=80;
  506.                      break;
  507.                }
  508.                break;
  509.             case 2:
  510.                switch(ITEMNUM(Mcode)){
  511.                   case 0:
  512.                      tip=10;
  513.                      break;
  514.                   case 1:
  515.                      tip=15;
  516.                      break;
  517.                   case 2:
  518.                      tip=20;
  519.                      break;
  520.                   case 3:
  521.                      tip=25;
  522.                      break;
  523.                   case 4:
  524.                      tip=30;
  525.                      break;
  526.                   case 5:
  527.                      tip=35;
  528.                      break;
  529.                   case 6:
  530.                      tip=40;
  531.                      break;
  532.                   case 7:
  533.                      tip=45;
  534.                      break;
  535.                   case 8:
  536.                      tip=50;
  537.                      break;
  538.                   case 9:
  539.                      tip=55;
  540.                      break;
  541.                   case 10:
  542.                      tip=60;
  543.                      break;
  544.                   case 11:
  545.                      tip=65;
  546.                      break;
  547.                   case 12:
  548.                      tip=70;
  549.                      break;
  550.                   case 13:
  551.                      tip=75;
  552.                      break;
  553.                   case 14:
  554.                      tip=80;
  555.                      break;
  556.                }
  557.                break;
  558.             case 3:
  559.                switch(ITEMNUM(Mcode)){
  560.                   case 0:
  561.                      magx=5.0;
  562.                      break;
  563.                   case 1:
  564.                      magx=10.0;
  565.                      break;
  566.                   case 2:
  567.                      magx=15.0;
  568.                      break;
  569.                   case 3:
  570.                      magx=20.0;
  571.                      break;
  572.                   case 4:
  573.                      magx=25.0;
  574.                      break;
  575.                   case 5:
  576.                      magx=30.0;
  577.                      break;
  578.                   case 6:
  579.                      magx=35.0;
  580.                      break;
  581.                   case 7:
  582.                      magx=40.0;
  583.                      break;
  584.                }
  585.                break;
  586.             case 4:
  587.                switch(ITEMNUM(Mcode)){
  588.                   case 0:
  589.                      magy=5.0;
  590.                      break;
  591.                   case 1:
  592.                      magy=10.0;
  593.                      break;
  594.                   case 2:
  595.                      magy=15.0;
  596.                      break;
  597.                   case 3:
  598.                      magy=20.0;
  599.                      break;
  600.                   case 4:
  601.                      magy=25.0;
  602.                      break;
  603.                   case 5:
  604.                      magy=30.0;
  605.                      break;
  606.                   case 6:
  607.                      magy=35.0;
  608.                      break;
  609.                   case 7:
  610.                      magy=40.0;
  611.                      break;
  612.                }
  613.                break;
  614.          }
  615.    } 
  616.   /* end of Class switch */      
  617.    }/* while */
  618. }
  619.  
  620. init_scr()
  621. {
  622.  
  623. SetMenuStrip(w,&BdMenu);
  624.  
  625. }   /* end of init_scr */
  626.  
  627. Cleanup()
  628. {
  629.    CloseWindow(w);
  630.    CloseScreen(screen);
  631. }
  632.